import 'dart:ui';

import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';


///自定义多语言处理代理
class MyLocalizationsDelegates
    extends LocalizationsDelegate<La> {
  ///构造
  const MyLocalizationsDelegates();
  ///静态构造
  static MyLocalizationsDelegates delegate = const MyLocalizationsDelegates();

  @override
  bool isSupported(Locale locale) {
    return ['zh', 'en', 'hk'].contains(locale.languageCode);
  }

  @override //是否需要重载
  bool shouldReload(LocalizationsDelegate old) => false;

  ///MyLocalizations就是在此方法内被初始化的
  ///通过方法的 locale 参数，判断需要加载的语言，然后返回自定义好多语言实现类MyLocalizations
  ///最后通过静态 delegate 对外提供 LocalizationsDelegate。
  @override
  Future<La> load(Locale locale) {
    //加载本地化
    return new SynchronousFuture(new La(locale));
  }
}

///La类 用于语言资源整合
class La {
  static dynamic ctx;
  ///该Locale类是用来识别用户的语言环境
  /// 在MyLocalizationsDelegates 的load方法中初始化的
  final Locale locale;

  La(this.locale);


  ///此处通过静态方式来初始化
  static La of() {
    ///Localizations 是多国语言资源的汇总
    return Localizations.of(ctx, La);
  }

  get welcomes {
    Map<String, String> _callText = {
      'CH': '中国欢迎你11',
      'US': 'China welcomes you11',
      'HK': '這是中國香港繁體字'
    };
    return _callText[locale.countryCode];
  }

  get setTingTitle {
    Map<String, String> _callText = {
      'CH': '标题',
      'US': 'title',
      'HK': '標題'
    };
    return _callText[locale.countryCode];
  }

}